<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Using sound</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Bochs User Manual"
HREF="index.html"><LINK
REL="UP"
TITLE="Using Bochs"
HREF="using-bochs.html"><LINK
REL="PREVIOUS"
TITLE="Save and restore simulation"
HREF="using-save-restore.html"><LINK
REL="NEXT"
TITLE="Common problems and what to do about them (Troubleshooting)"
HREF="common-problems.html"></HEAD
><BODY
CLASS="SECTION"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Bochs User Manual</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="using-save-restore.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Using Bochs</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="common-problems.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECTION"
><H1
CLASS="SECTION"
><A
NAME="USING-SOUND"
>5.6. Using sound</A
></H1
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN3137"
>5.6.1. Sound basics</A
></H2
><P
>Bochs supports two types of soundcards (SB16 ISA and ES1370 PCI) and the legacy
PC speaker. The lowlevel sound interface provides a set of functions for wave
(PCM) input / output and MIDI output using the host sound system. A driver must
not implement all of these functions. The following table shows the supported
drivers and their features.
<DIV
CLASS="TABLE"
><A
NAME="AEN3140"
></A
><P
><B
>Table 5-3. Sound lowlevel modules</B
></P
><TABLE
BORDER="1"
RULES="all"
CLASS="CALSTABLE"
><COL><COL><COL><COL><THEAD
><TR
><TH
>Name</TH
><TH
>Description</TH
><TH
>Wave input</TH
><TH
>MIDI output</TH
></TR
></THEAD
><TBODY
><TR
><TD
>alsa</TD
><TD
>use the default ALSA PCM device and the default ALSA sequencer
    on Linux</TD
><TD
>Yes</TD
><TD
>Yes</TD
></TR
><TR
><TD
>oss</TD
><TD
>use the Open Sound System on Linux and FreeBSD</TD
><TD
>Yes</TD
><TD
>Yes</TD
></TR
><TR
><TD
>osx</TD
><TD
>for output on Mac OS 9 and Mac OSX</TD
><TD
>No</TD
><TD
>Yes</TD
></TR
><TR
><TD
>sdl</TD
><TD
>for wave output on platforms supported by SDL (1.2.x or 2.x)</TD
><TD
>No</TD
><TD
>No</TD
></TR
><TR
><TD
>win</TD
><TD
>for output to the midi and wave mapper of Windows</TD
><TD
>Yes</TD
><TD
>Yes</TD
></TR
></TBODY
></TABLE
></DIV
></P
><P
>These special values are also valid for the sound driver:
<P
></P
><UL
><LI
><P
><CODE
CLASS="OPTION"
>default</CODE
> - select platform-default sound driver.</P
></LI
><LI
><P
><CODE
CLASS="OPTION"
>file</CODE
> - wave and MIDI output to file(s)</P
></LI
><LI
><P
><CODE
CLASS="OPTION"
>dummy</CODE
> - no output at all</P
></LI
></UL
></P
><P
>When compiling Bochs, the lowlevel sound support is activated if one of the soundcards
is enabled (<CODE
CLASS="OPTION"
>--enable-sb16</CODE
> or <CODE
CLASS="OPTION"
>--enable-es1370</CODE
>).
The configure script detects the available drivers and sets up a platform-default
one.</P
><P
>At runtime the lowlevel sound module will be loaded automatically if one of the
sound devices is enabled in the <TT
CLASS="FILENAME"
>bochsrc</TT
>. The drivers and
devices for wave input / output and MIDI output must be set up with the
<A
HREF="bochsrc.html#BOCHSOPT-SOUND"
>sound</A
> option.</P
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN3192"
>5.6.2. The PC speaker</A
></H2
><P
>The PC speaker is connected to the PIT 8254 timer #2 and generates a square
wave beep with a frequency depending on the timer value. In Bochs the
speaker is a separate plugin that is controlled by the two events "beep on"
and "beep off". The "beep on" event is also called when the frequency
changes while turned on.</P
><P
>The destination for the speaker output can be selected with the <CODE
CLASS="OPTION"
>mode</CODE
>
parameter of the <A
HREF="bochsrc.html#BOCHSOPT-SPEAKER"
>speaker</A
> option. Three choices are available:
<P
></P
><UL
><LI
><P
><CODE
CLASS="OPTION"
>sound</CODE
> : the beep is generated by the square wave
generator which is a part of the lowlevel sound support.</P
></LI
><LI
><P
><CODE
CLASS="OPTION"
>system</CODE
> : only available on Linux and Windows.
On Linux /dev/console is used for output and on Windows the Beep() function.</P
></LI
><LI
><P
><CODE
CLASS="OPTION"
>gui</CODE
> : forwards the beep to the related gui methods
(currently only used by the Carbon gui).</P
></LI
></UL
></P
></DIV
><DIV
CLASS="SECTION"
><H2
CLASS="SECTION"
><A
NAME="AEN3208"
>5.6.3. SB16 runtime configuration</A
></H2
><P
>Most of the SB16 configuration parameters are available in the runtime
configuration menu or dialog. In addition to this, there is a small program
called <B
CLASS="COMMAND"
>SB16CTRL</B
> to change emulation settings from inside
the simulation.</P
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="AEN3212"
>5.6.3.1. Runtime options</A
></H3
><P
>Unlike other devices, the SB16 emulation has it's own logfile and a loglevel parameter
to control what should be printed there. Both the <CODE
CLASS="OPTION"
>log</CODE
> file and
<CODE
CLASS="OPTION"
>loglevel</CODE
> parameters can be changed at runtime. See the
<A
HREF="bochsrc.html#BOCHSOPT-SB16"
>sb16</A
> bochsrc option for details.</P
><P
>The output parameters <CODE
CLASS="OPTION"
>midimode</CODE
>, <CODE
CLASS="OPTION"
>midifile</CODE
>,
<CODE
CLASS="OPTION"
>wavemode</CODE
> and <CODE
CLASS="OPTION"
>wavefile</CODE
> are also available at
runtime.</P
><P
>The <CODE
CLASS="OPTION"
>dmatimer</CODE
> parameter controls the DMA timing for wave (PCM)
input and output. When you get non-continuous sound this value can be ajusted
to fix this. This needs a reasonably correct setting for the
<A
HREF="bochsrc.html#BOCHSOPT-CPU-IPS"
>cpu: ips</A
> option.</P
></DIV
><DIV
CLASS="SECTION"
><H3
CLASS="SECTION"
><A
NAME="SB16CTRL"
>5.6.3.2. SB16CTRL</A
></H3
><P
>The source for the SB16CTRL program that is used to modify
the runtime behavior of the SB16 emulation is included in
<TT
CLASS="FILENAME"
>misc/sb16/</TT
>. It is a C
program that can be run from inside the emulation.</P
><P
>It currently supports the following commands:</P
><DIV
CLASS="TABLE"
><A
NAME="AEN3231"
></A
><P
><B
>Table 5-4. Supported options for <B
CLASS="COMMAND"
>sb16ctrl</B
></B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL><COL><THEAD
><TR
><TH
>Option</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="OPTION"
>-i <TT
CLASS="REPLACEABLE"
><I
>number</I
></TT
></CODE
></TD
><TD
>        Show the selected emulator info string,
        e.g. <B
CLASS="COMMAND"
>sb16ctrl -i 3</B
> to show how many patch translations are active.
      </TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-t <TT
CLASS="REPLACEABLE"
><I
>six numbers</I
></TT
></CODE
></TD
><TD
>        Load a translation into the translation table. The numbers are:
        "OldBankMSB,OldBankLSB,OldProgram,NewBankMSB,NewBankLSB,NewProgram".
        All values can be 0..127 or 255. 255 for "Old" values means <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>match
        any</I
></SPAN
> and for "New" values means <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>don't change</I
></SPAN
>,
        e.g. <B
CLASS="COMMAND"
>sb16ctrl -t 255,255,0,255,255,32</B
>
        to change patch 0 (Piano) to patch 32 (Acoustic Bass).
      </TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-r</CODE
></TD
><TD
>        Reset the patch translation table e.g. <B
CLASS="COMMAND"
>sb16ctrl -r</B
>.
      </TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-m <TT
CLASS="REPLACEABLE"
><I
>some numbers</I
></TT
></CODE
></TD
><TD
>        Upload the given numbers to the midi output device. Note
        that it should be a complete midi message, and also that it is
        subject to patch translation,
        e.g. <B
CLASS="COMMAND"
>sb16ctrl -m 0x80,64,0</B
>
        to send a note-off message to channel 0.
      </TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-f <TT
CLASS="REPLACEABLE"
><I
>filename</I
></TT
></CODE
></TD
><TD
>        Read in a file and execute the commands in it. These have
        the same format as the above commands, except that they don't have
        the dash "-" in front of them.
        Comment lines are supported and start with a hash sign "#".
      </TD
></TR
><TR
><TD
><CODE
CLASS="OPTION"
>-h</CODE
></TD
><TD
>        Show a brief summary of the commands.
      </TD
></TR
></TBODY
></TABLE
></DIV
><P
>All numbers can be valid parameters to the <CODE
CLASS="FUNCTION"
>strtol()</CODE
> function, so hex and
octal notation is fine. They have to be delimited by either commas "," or
slashes "/", spaces are not allowed.</P
><P
>The command line can have any number of commands. However, if none are given,
"-f -" is assumed, which means commands are taken from stdin.</P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="using-save-restore.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="common-problems.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Save and restore simulation</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="using-bochs.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Common problems and what to do about them (Troubleshooting)</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>